///* ================================================================
//solvling Ax = b for poisson equation, using hypre
//ref: hypre2.22.0/src/examples/ex5.c
//==================================================================*/
//#ifndef SolverHypre_H
//#define SolverHypre_H
//
//#include <HYPRE_krylov.h>
//#include <HYPRE.h>
//#include <HYPRE_parcsr_ls.h>
//
//#include "Solver.h"
//#include "Equation/Matrix.h"
//
//
//class SolverHypre : public Solver
//{
//
//public:
//
//    SolverHypre(math::SMatrix* A_, math::Vector* b_, math::Vector* x_);
//    virtual ~SolverHypre();
//
//    virtual void operator()();
//    void solve();
//    void finish();
//    void init();
//
//    math::SMatrix* A;
//    math::Vector* b;
//    math::Vector* x;
//
//protected:
//
//    int i;
//    int myid, num_procs;
//    int N, n;
//
//    int ilower, iupper;
//    int local_size, extra;
//
//    int solver_id;
//    int vis, print_system;
//
//    double h, h2;
//
//    HYPRE_IJMatrix A_hypre;
//    HYPRE_ParCSRMatrix parcsr_A_hypre;
//    HYPRE_IJVector b_hypre;
//    HYPRE_ParVector par_b_hypre;
//    HYPRE_IJVector x_hypre;
//    HYPRE_ParVector par_x_hypre;
//
//    HYPRE_Solver solver, precond;
//
//    double *rhs_values, *x_values;
//    int    *rows;
//
//};
//
//#endif
